1.物件實字:插入屬性與值,可插入純值、物件、函式
var family = {
//property: value
name: '小明家',
deposit: 1000,
members: {
mom: '老媽',
ming: '小明'
},
callFamily: function(){
console.log('聯絡小明家');
}
2.物件建構式
var newFamily = new Object(family);
※ 使用 []
中括號取值:可插入字串、變數來取值
※ 屬性名稱永遠是字串
console.log(family.name); // 小明家
console.log(family.members.mom); // 老媽
var a = 'name';
console.log(family['name']); // 小明家
console.log(family[a]); // 小明家
family.callFamily(); // 執行函式: 聯絡小明家
family['family'](); // 執行函式: 聯絡小明家
family.dog = '小白';
family['kitten'] = '小貓';
family['$'] = 'money';
delete family.deposit;
delete family['$'];
變數及物件屬性的差異;
變數無法被刪除,屬性才可以!
var a = 1;
b = 2; // b 等同於 window.b
console.log(window);
delete a;
delete b;
console.log(a); // 1 變數無法被刪除
console.log(b); // b is not defined
var family = {};
family.name = '小明家'
// 一般物件新增屬性
var newString = '小明家';
newString.name = '小明';
console.log(newString); // 小明家
// 純值無法新增屬性
此種方式新增的字串,並非純值(是物件)
var newString2 = new String('小明家');
newString2.name = '小明';
console.log(newString2);
// String {"小明家", name: "小明"}
因為陣列也屬於物件型別,所以可行
var newArray = [1,2,3];
newArray.name = '小明';
console.log(newArray);
// [1,2,3,name: "小明"]
function callName(){
console.log('呼叫小明');
}
callName.ming = '小明';
console.dir(callName);
// 使用 console.dir 可以看到物件所有屬性內容
// callName() 打開可看到 ming: "小明"
var family = {
name: '小明家',
};
console.log(family.ming);
// undefined
// 物件下並沒有這個屬性
方法 1 : 新增一個空物件,就可以正確插入屬性與值
var family = {
name: '小明家',
ming: {}
}
方法 2 : 定義一個物件結構
family.ming = {
name: '小明'
}
※ 可以透過 console.log(window.屬性名) 去查詢有無該屬性